#include "common.h"

template <typename T>
class Data {
 private:
  int value = {5};
  int pos = {7};

 public:
  friend T;
};

class InnerVisitor {
 public:
  void show_value(const Data<InnerVisitor> val) {
    cout << "value" << val.value << "pos" << val.pos << endl;
  }
};

// 这种做法似乎是不可以的，因为这种做法是泛型的泛型
template <typename T>
class InnerVisitorT {
 public:
  void show_value(const Data<T> val) {
    cout << "value" << val.value << "pos" << val.pos << endl;
  }     
};  



    int main() {
    Data<InnerVisitor> a;
  InnerVisitor b;
  b.show_value(a);

  return 0;
}